/*
 * Copyright Codeplay Software Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use these files except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// DO NOT MODIFY BY HAND
// This file was automatically generated by generate_matmul_tests.py.
// Results calculated using Tensorflow v1.12.0.

#include <gtest/gtest.h>
#include <vector>

#include "test/matmul/fixture.h"
#include "test/types/kernel_data_types.h"
#include "test/types/to_gtest_types.h"

using DataTypeList = sycldnn::types::KernelDataTypes;
using GTestTypeList = sycldnn::types::ToGTestTypes<DataTypeList>::type;

template <typename DataType>
using MatmulBatch1Beta0FalseFalse = MatmulFixture<DataType, false, false>;
TYPED_TEST_SUITE(MatmulBatch1Beta0FalseFalse, GTestTypeList);
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M14xK14xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12845.,  12950.,  13055.,  13160.,  13265.,  13370.,  13475.,  13580.,
      13685.,  13790.,  13895.,  14000.,  14105.,  14210.,  30877.,  31178.,
      31479.,  31780.,  32081.,  32382.,  32683.,  32984.,  33285.,  33586.,
      33887.,  34188.,  34489.,  34790.,  48909.,  49406.,  49903.,  50400.,
      50897.,  51394.,  51891.,  52388.,  52885.,  53382.,  53879.,  54376.,
      54873.,  55370.,  66941.,  67634.,  68327.,  69020.,  69713.,  70406.,
      71099.,  71792.,  72485.,  73178.,  73871.,  74564.,  75257.,  75950.,
      84973.,  85862.,  86751.,  87640.,  88529.,  89418.,  90307.,  91196.,
      92085.,  92974.,  93863.,  94752.,  95641.,  96530.,  103005., 104090.,
      105175., 106260., 107345., 108430., 109515., 110600., 111685., 112770.,
      113855., 114940., 116025., 117110., 121037., 122318., 123599., 124880.,
      126161., 127442., 128723., 130004., 131285., 132566., 133847., 135128.,
      136409., 137690., 139069., 140546., 142023., 143500., 144977., 146454.,
      147931., 149408., 150885., 152362., 153839., 155316., 156793., 158270.,
      157101., 158774., 160447., 162120., 163793., 165466., 167139., 168812.,
      170485., 172158., 173831., 175504., 177177., 178850., 175133., 177002.,
      178871., 180740., 182609., 184478., 186347., 188216., 190085., 191954.,
      193823., 195692., 197561., 199430., 193165., 195230., 197295., 199360.,
      201425., 203490., 205555., 207620., 209685., 211750., 213815., 215880.,
      217945., 220010., 211197., 213458., 215719., 217980., 220241., 222502.,
      224763., 227024., 229285., 231546., 233807., 236068., 238329., 240590.,
      229229., 231686., 234143., 236600., 239057., 241514., 243971., 246428.,
      248885., 251342., 253799., 256256., 258713., 261170., 247261., 249914.,
      252567., 255220., 257873., 260526., 263179., 265832., 268485., 271138.,
      273791., 276444., 279097., 281750.};
  const int batches = 1;
  const int m = 14;
  const int k = 14;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M14xK14xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13755.,  13860.,  13965.,  14070.,  14175.,  14280.,  14385.,  14490.,
      14595.,  14700.,  14805.,  14910.,  15015.,  15120.,  15225.,  33061.,
      33362.,  33663.,  33964.,  34265.,  34566.,  34867.,  35168.,  35469.,
      35770.,  36071.,  36372.,  36673.,  36974.,  37275.,  52367.,  52864.,
      53361.,  53858.,  54355.,  54852.,  55349.,  55846.,  56343.,  56840.,
      57337.,  57834.,  58331.,  58828.,  59325.,  71673.,  72366.,  73059.,
      73752.,  74445.,  75138.,  75831.,  76524.,  77217.,  77910.,  78603.,
      79296.,  79989.,  80682.,  81375.,  90979.,  91868.,  92757.,  93646.,
      94535.,  95424.,  96313.,  97202.,  98091.,  98980.,  99869.,  100758.,
      101647., 102536., 103425., 110285., 111370., 112455., 113540., 114625.,
      115710., 116795., 117880., 118965., 120050., 121135., 122220., 123305.,
      124390., 125475., 129591., 130872., 132153., 133434., 134715., 135996.,
      137277., 138558., 139839., 141120., 142401., 143682., 144963., 146244.,
      147525., 148897., 150374., 151851., 153328., 154805., 156282., 157759.,
      159236., 160713., 162190., 163667., 165144., 166621., 168098., 169575.,
      168203., 169876., 171549., 173222., 174895., 176568., 178241., 179914.,
      181587., 183260., 184933., 186606., 188279., 189952., 191625., 187509.,
      189378., 191247., 193116., 194985., 196854., 198723., 200592., 202461.,
      204330., 206199., 208068., 209937., 211806., 213675., 206815., 208880.,
      210945., 213010., 215075., 217140., 219205., 221270., 223335., 225400.,
      227465., 229530., 231595., 233660., 235725., 226121., 228382., 230643.,
      232904., 235165., 237426., 239687., 241948., 244209., 246470., 248731.,
      250992., 253253., 255514., 257775., 245427., 247884., 250341., 252798.,
      255255., 257712., 260169., 262626., 265083., 267540., 269997., 272454.,
      274911., 277368., 279825., 264733., 267386., 270039., 272692., 275345.,
      277998., 280651., 283304., 285957., 288610., 291263., 293916., 296569.,
      299222., 301875.};
  const int batches = 1;
  const int m = 14;
  const int k = 14;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M14xK14xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14665.,  14770.,  14875.,  14980.,  15085.,  15190.,  15295.,  15400.,
      15505.,  15610.,  15715.,  15820.,  15925.,  16030.,  16135.,  16240.,
      35245.,  35546.,  35847.,  36148.,  36449.,  36750.,  37051.,  37352.,
      37653.,  37954.,  38255.,  38556.,  38857.,  39158.,  39459.,  39760.,
      55825.,  56322.,  56819.,  57316.,  57813.,  58310.,  58807.,  59304.,
      59801.,  60298.,  60795.,  61292.,  61789.,  62286.,  62783.,  63280.,
      76405.,  77098.,  77791.,  78484.,  79177.,  79870.,  80563.,  81256.,
      81949.,  82642.,  83335.,  84028.,  84721.,  85414.,  86107.,  86800.,
      96985.,  97874.,  98763.,  99652.,  100541., 101430., 102319., 103208.,
      104097., 104986., 105875., 106764., 107653., 108542., 109431., 110320.,
      117565., 118650., 119735., 120820., 121905., 122990., 124075., 125160.,
      126245., 127330., 128415., 129500., 130585., 131670., 132755., 133840.,
      138145., 139426., 140707., 141988., 143269., 144550., 145831., 147112.,
      148393., 149674., 150955., 152236., 153517., 154798., 156079., 157360.,
      158725., 160202., 161679., 163156., 164633., 166110., 167587., 169064.,
      170541., 172018., 173495., 174972., 176449., 177926., 179403., 180880.,
      179305., 180978., 182651., 184324., 185997., 187670., 189343., 191016.,
      192689., 194362., 196035., 197708., 199381., 201054., 202727., 204400.,
      199885., 201754., 203623., 205492., 207361., 209230., 211099., 212968.,
      214837., 216706., 218575., 220444., 222313., 224182., 226051., 227920.,
      220465., 222530., 224595., 226660., 228725., 230790., 232855., 234920.,
      236985., 239050., 241115., 243180., 245245., 247310., 249375., 251440.,
      241045., 243306., 245567., 247828., 250089., 252350., 254611., 256872.,
      259133., 261394., 263655., 265916., 268177., 270438., 272699., 274960.,
      261625., 264082., 266539., 268996., 271453., 273910., 276367., 278824.,
      281281., 283738., 286195., 288652., 291109., 293566., 296023., 298480.,
      282205., 284858., 287511., 290164., 292817., 295470., 298123., 300776.,
      303429., 306082., 308735., 311388., 314041., 316694., 319347., 322000.};
  const int batches = 1;
  const int m = 14;
  const int k = 14;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M14xK15xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15800.,  15920.,  16040.,  16160.,  16280.,  16400.,  16520.,  16640.,
      16760.,  16880.,  17000.,  17120.,  17240.,  17360.,  38075.,  38420.,
      38765.,  39110.,  39455.,  39800.,  40145.,  40490.,  40835.,  41180.,
      41525.,  41870.,  42215.,  42560.,  60350.,  60920.,  61490.,  62060.,
      62630.,  63200.,  63770.,  64340.,  64910.,  65480.,  66050.,  66620.,
      67190.,  67760.,  82625.,  83420.,  84215.,  85010.,  85805.,  86600.,
      87395.,  88190.,  88985.,  89780.,  90575.,  91370.,  92165.,  92960.,
      104900., 105920., 106940., 107960., 108980., 110000., 111020., 112040.,
      113060., 114080., 115100., 116120., 117140., 118160., 127175., 128420.,
      129665., 130910., 132155., 133400., 134645., 135890., 137135., 138380.,
      139625., 140870., 142115., 143360., 149450., 150920., 152390., 153860.,
      155330., 156800., 158270., 159740., 161210., 162680., 164150., 165620.,
      167090., 168560., 171725., 173420., 175115., 176810., 178505., 180200.,
      181895., 183590., 185285., 186980., 188675., 190370., 192065., 193760.,
      194000., 195920., 197840., 199760., 201680., 203600., 205520., 207440.,
      209360., 211280., 213200., 215120., 217040., 218960., 216275., 218420.,
      220565., 222710., 224855., 227000., 229145., 231290., 233435., 235580.,
      237725., 239870., 242015., 244160., 238550., 240920., 243290., 245660.,
      248030., 250400., 252770., 255140., 257510., 259880., 262250., 264620.,
      266990., 269360., 260825., 263420., 266015., 268610., 271205., 273800.,
      276395., 278990., 281585., 284180., 286775., 289370., 291965., 294560.,
      283100., 285920., 288740., 291560., 294380., 297200., 300020., 302840.,
      305660., 308480., 311300., 314120., 316940., 319760., 305375., 308420.,
      311465., 314510., 317555., 320600., 323645., 326690., 329735., 332780.,
      335825., 338870., 341915., 344960.};
  const int batches = 1;
  const int m = 14;
  const int k = 15;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M14xK15xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      16920.,  17040.,  17160.,  17280.,  17400.,  17520.,  17640.,  17760.,
      17880.,  18000.,  18120.,  18240.,  18360.,  18480.,  18600.,  40770.,
      41115.,  41460.,  41805.,  42150.,  42495.,  42840.,  43185.,  43530.,
      43875.,  44220.,  44565.,  44910.,  45255.,  45600.,  64620.,  65190.,
      65760.,  66330.,  66900.,  67470.,  68040.,  68610.,  69180.,  69750.,
      70320.,  70890.,  71460.,  72030.,  72600.,  88470.,  89265.,  90060.,
      90855.,  91650.,  92445.,  93240.,  94035.,  94830.,  95625.,  96420.,
      97215.,  98010.,  98805.,  99600.,  112320., 113340., 114360., 115380.,
      116400., 117420., 118440., 119460., 120480., 121500., 122520., 123540.,
      124560., 125580., 126600., 136170., 137415., 138660., 139905., 141150.,
      142395., 143640., 144885., 146130., 147375., 148620., 149865., 151110.,
      152355., 153600., 160020., 161490., 162960., 164430., 165900., 167370.,
      168840., 170310., 171780., 173250., 174720., 176190., 177660., 179130.,
      180600., 183870., 185565., 187260., 188955., 190650., 192345., 194040.,
      195735., 197430., 199125., 200820., 202515., 204210., 205905., 207600.,
      207720., 209640., 211560., 213480., 215400., 217320., 219240., 221160.,
      223080., 225000., 226920., 228840., 230760., 232680., 234600., 231570.,
      233715., 235860., 238005., 240150., 242295., 244440., 246585., 248730.,
      250875., 253020., 255165., 257310., 259455., 261600., 255420., 257790.,
      260160., 262530., 264900., 267270., 269640., 272010., 274380., 276750.,
      279120., 281490., 283860., 286230., 288600., 279270., 281865., 284460.,
      287055., 289650., 292245., 294840., 297435., 300030., 302625., 305220.,
      307815., 310410., 313005., 315600., 303120., 305940., 308760., 311580.,
      314400., 317220., 320040., 322860., 325680., 328500., 331320., 334140.,
      336960., 339780., 342600., 326970., 330015., 333060., 336105., 339150.,
      342195., 345240., 348285., 351330., 354375., 357420., 360465., 363510.,
      366555., 369600.};
  const int batches = 1;
  const int m = 14;
  const int k = 15;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M14xK15xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      18040.,  18160.,  18280.,  18400.,  18520.,  18640.,  18760.,  18880.,
      19000.,  19120.,  19240.,  19360.,  19480.,  19600.,  19720.,  19840.,
      43465.,  43810.,  44155.,  44500.,  44845.,  45190.,  45535.,  45880.,
      46225.,  46570.,  46915.,  47260.,  47605.,  47950.,  48295.,  48640.,
      68890.,  69460.,  70030.,  70600.,  71170.,  71740.,  72310.,  72880.,
      73450.,  74020.,  74590.,  75160.,  75730.,  76300.,  76870.,  77440.,
      94315.,  95110.,  95905.,  96700.,  97495.,  98290.,  99085.,  99880.,
      100675., 101470., 102265., 103060., 103855., 104650., 105445., 106240.,
      119740., 120760., 121780., 122800., 123820., 124840., 125860., 126880.,
      127900., 128920., 129940., 130960., 131980., 133000., 134020., 135040.,
      145165., 146410., 147655., 148900., 150145., 151390., 152635., 153880.,
      155125., 156370., 157615., 158860., 160105., 161350., 162595., 163840.,
      170590., 172060., 173530., 175000., 176470., 177940., 179410., 180880.,
      182350., 183820., 185290., 186760., 188230., 189700., 191170., 192640.,
      196015., 197710., 199405., 201100., 202795., 204490., 206185., 207880.,
      209575., 211270., 212965., 214660., 216355., 218050., 219745., 221440.,
      221440., 223360., 225280., 227200., 229120., 231040., 232960., 234880.,
      236800., 238720., 240640., 242560., 244480., 246400., 248320., 250240.,
      246865., 249010., 251155., 253300., 255445., 257590., 259735., 261880.,
      264025., 266170., 268315., 270460., 272605., 274750., 276895., 279040.,
      272290., 274660., 277030., 279400., 281770., 284140., 286510., 288880.,
      291250., 293620., 295990., 298360., 300730., 303100., 305470., 307840.,
      297715., 300310., 302905., 305500., 308095., 310690., 313285., 315880.,
      318475., 321070., 323665., 326260., 328855., 331450., 334045., 336640.,
      323140., 325960., 328780., 331600., 334420., 337240., 340060., 342880.,
      345700., 348520., 351340., 354160., 356980., 359800., 362620., 365440.,
      348565., 351610., 354655., 357700., 360745., 363790., 366835., 369880.,
      372925., 375970., 379015., 382060., 385105., 388150., 391195., 394240.};
  const int batches = 1;
  const int m = 14;
  const int k = 15;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M14xK16xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19176.,  19312.,  19448.,  19584.,  19720.,  19856.,  19992.,  20128.,
      20264.,  20400.,  20536.,  20672.,  20808.,  20944.,  46312.,  46704.,
      47096.,  47488.,  47880.,  48272.,  48664.,  49056.,  49448.,  49840.,
      50232.,  50624.,  51016.,  51408.,  73448.,  74096.,  74744.,  75392.,
      76040.,  76688.,  77336.,  77984.,  78632.,  79280.,  79928.,  80576.,
      81224.,  81872.,  100584., 101488., 102392., 103296., 104200., 105104.,
      106008., 106912., 107816., 108720., 109624., 110528., 111432., 112336.,
      127720., 128880., 130040., 131200., 132360., 133520., 134680., 135840.,
      137000., 138160., 139320., 140480., 141640., 142800., 154856., 156272.,
      157688., 159104., 160520., 161936., 163352., 164768., 166184., 167600.,
      169016., 170432., 171848., 173264., 181992., 183664., 185336., 187008.,
      188680., 190352., 192024., 193696., 195368., 197040., 198712., 200384.,
      202056., 203728., 209128., 211056., 212984., 214912., 216840., 218768.,
      220696., 222624., 224552., 226480., 228408., 230336., 232264., 234192.,
      236264., 238448., 240632., 242816., 245000., 247184., 249368., 251552.,
      253736., 255920., 258104., 260288., 262472., 264656., 263400., 265840.,
      268280., 270720., 273160., 275600., 278040., 280480., 282920., 285360.,
      287800., 290240., 292680., 295120., 290536., 293232., 295928., 298624.,
      301320., 304016., 306712., 309408., 312104., 314800., 317496., 320192.,
      322888., 325584., 317672., 320624., 323576., 326528., 329480., 332432.,
      335384., 338336., 341288., 344240., 347192., 350144., 353096., 356048.,
      344808., 348016., 351224., 354432., 357640., 360848., 364056., 367264.,
      370472., 373680., 376888., 380096., 383304., 386512., 371944., 375408.,
      378872., 382336., 385800., 389264., 392728., 396192., 399656., 403120.,
      406584., 410048., 413512., 416976.};
  const int batches = 1;
  const int m = 14;
  const int k = 16;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M14xK16xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      20536.,  20672.,  20808.,  20944.,  21080.,  21216.,  21352.,  21488.,
      21624.,  21760.,  21896.,  22032.,  22168.,  22304.,  22440.,  49592.,
      49984.,  50376.,  50768.,  51160.,  51552.,  51944.,  52336.,  52728.,
      53120.,  53512.,  53904.,  54296.,  54688.,  55080.,  78648.,  79296.,
      79944.,  80592.,  81240.,  81888.,  82536.,  83184.,  83832.,  84480.,
      85128.,  85776.,  86424.,  87072.,  87720.,  107704., 108608., 109512.,
      110416., 111320., 112224., 113128., 114032., 114936., 115840., 116744.,
      117648., 118552., 119456., 120360., 136760., 137920., 139080., 140240.,
      141400., 142560., 143720., 144880., 146040., 147200., 148360., 149520.,
      150680., 151840., 153000., 165816., 167232., 168648., 170064., 171480.,
      172896., 174312., 175728., 177144., 178560., 179976., 181392., 182808.,
      184224., 185640., 194872., 196544., 198216., 199888., 201560., 203232.,
      204904., 206576., 208248., 209920., 211592., 213264., 214936., 216608.,
      218280., 223928., 225856., 227784., 229712., 231640., 233568., 235496.,
      237424., 239352., 241280., 243208., 245136., 247064., 248992., 250920.,
      252984., 255168., 257352., 259536., 261720., 263904., 266088., 268272.,
      270456., 272640., 274824., 277008., 279192., 281376., 283560., 282040.,
      284480., 286920., 289360., 291800., 294240., 296680., 299120., 301560.,
      304000., 306440., 308880., 311320., 313760., 316200., 311096., 313792.,
      316488., 319184., 321880., 324576., 327272., 329968., 332664., 335360.,
      338056., 340752., 343448., 346144., 348840., 340152., 343104., 346056.,
      349008., 351960., 354912., 357864., 360816., 363768., 366720., 369672.,
      372624., 375576., 378528., 381480., 369208., 372416., 375624., 378832.,
      382040., 385248., 388456., 391664., 394872., 398080., 401288., 404496.,
      407704., 410912., 414120., 398264., 401728., 405192., 408656., 412120.,
      415584., 419048., 422512., 425976., 429440., 432904., 436368., 439832.,
      443296., 446760.};
  const int batches = 1;
  const int m = 14;
  const int k = 16;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M14xK16xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21896.,  22032.,  22168.,  22304.,  22440.,  22576.,  22712.,  22848.,
      22984.,  23120.,  23256.,  23392.,  23528.,  23664.,  23800.,  23936.,
      52872.,  53264.,  53656.,  54048.,  54440.,  54832.,  55224.,  55616.,
      56008.,  56400.,  56792.,  57184.,  57576.,  57968.,  58360.,  58752.,
      83848.,  84496.,  85144.,  85792.,  86440.,  87088.,  87736.,  88384.,
      89032.,  89680.,  90328.,  90976.,  91624.,  92272.,  92920.,  93568.,
      114824., 115728., 116632., 117536., 118440., 119344., 120248., 121152.,
      122056., 122960., 123864., 124768., 125672., 126576., 127480., 128384.,
      145800., 146960., 148120., 149280., 150440., 151600., 152760., 153920.,
      155080., 156240., 157400., 158560., 159720., 160880., 162040., 163200.,
      176776., 178192., 179608., 181024., 182440., 183856., 185272., 186688.,
      188104., 189520., 190936., 192352., 193768., 195184., 196600., 198016.,
      207752., 209424., 211096., 212768., 214440., 216112., 217784., 219456.,
      221128., 222800., 224472., 226144., 227816., 229488., 231160., 232832.,
      238728., 240656., 242584., 244512., 246440., 248368., 250296., 252224.,
      254152., 256080., 258008., 259936., 261864., 263792., 265720., 267648.,
      269704., 271888., 274072., 276256., 278440., 280624., 282808., 284992.,
      287176., 289360., 291544., 293728., 295912., 298096., 300280., 302464.,
      300680., 303120., 305560., 308000., 310440., 312880., 315320., 317760.,
      320200., 322640., 325080., 327520., 329960., 332400., 334840., 337280.,
      331656., 334352., 337048., 339744., 342440., 345136., 347832., 350528.,
      353224., 355920., 358616., 361312., 364008., 366704., 369400., 372096.,
      362632., 365584., 368536., 371488., 374440., 377392., 380344., 383296.,
      386248., 389200., 392152., 395104., 398056., 401008., 403960., 406912.,
      393608., 396816., 400024., 403232., 406440., 409648., 412856., 416064.,
      419272., 422480., 425688., 428896., 432104., 435312., 438520., 441728.,
      424584., 428048., 431512., 434976., 438440., 441904., 445368., 448832.,
      452296., 455760., 459224., 462688., 466152., 469616., 473080., 476544.};
  const int batches = 1;
  const int m = 14;
  const int k = 16;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M15xK14xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12845.,  12950.,  13055.,  13160.,  13265.,  13370.,  13475.,  13580.,
      13685.,  13790.,  13895.,  14000.,  14105.,  14210.,  30877.,  31178.,
      31479.,  31780.,  32081.,  32382.,  32683.,  32984.,  33285.,  33586.,
      33887.,  34188.,  34489.,  34790.,  48909.,  49406.,  49903.,  50400.,
      50897.,  51394.,  51891.,  52388.,  52885.,  53382.,  53879.,  54376.,
      54873.,  55370.,  66941.,  67634.,  68327.,  69020.,  69713.,  70406.,
      71099.,  71792.,  72485.,  73178.,  73871.,  74564.,  75257.,  75950.,
      84973.,  85862.,  86751.,  87640.,  88529.,  89418.,  90307.,  91196.,
      92085.,  92974.,  93863.,  94752.,  95641.,  96530.,  103005., 104090.,
      105175., 106260., 107345., 108430., 109515., 110600., 111685., 112770.,
      113855., 114940., 116025., 117110., 121037., 122318., 123599., 124880.,
      126161., 127442., 128723., 130004., 131285., 132566., 133847., 135128.,
      136409., 137690., 139069., 140546., 142023., 143500., 144977., 146454.,
      147931., 149408., 150885., 152362., 153839., 155316., 156793., 158270.,
      157101., 158774., 160447., 162120., 163793., 165466., 167139., 168812.,
      170485., 172158., 173831., 175504., 177177., 178850., 175133., 177002.,
      178871., 180740., 182609., 184478., 186347., 188216., 190085., 191954.,
      193823., 195692., 197561., 199430., 193165., 195230., 197295., 199360.,
      201425., 203490., 205555., 207620., 209685., 211750., 213815., 215880.,
      217945., 220010., 211197., 213458., 215719., 217980., 220241., 222502.,
      224763., 227024., 229285., 231546., 233807., 236068., 238329., 240590.,
      229229., 231686., 234143., 236600., 239057., 241514., 243971., 246428.,
      248885., 251342., 253799., 256256., 258713., 261170., 247261., 249914.,
      252567., 255220., 257873., 260526., 263179., 265832., 268485., 271138.,
      273791., 276444., 279097., 281750., 265293., 268142., 270991., 273840.,
      276689., 279538., 282387., 285236., 288085., 290934., 293783., 296632.,
      299481., 302330.};
  const int batches = 1;
  const int m = 15;
  const int k = 14;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M15xK14xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13755.,  13860.,  13965.,  14070.,  14175.,  14280.,  14385.,  14490.,
      14595.,  14700.,  14805.,  14910.,  15015.,  15120.,  15225.,  33061.,
      33362.,  33663.,  33964.,  34265.,  34566.,  34867.,  35168.,  35469.,
      35770.,  36071.,  36372.,  36673.,  36974.,  37275.,  52367.,  52864.,
      53361.,  53858.,  54355.,  54852.,  55349.,  55846.,  56343.,  56840.,
      57337.,  57834.,  58331.,  58828.,  59325.,  71673.,  72366.,  73059.,
      73752.,  74445.,  75138.,  75831.,  76524.,  77217.,  77910.,  78603.,
      79296.,  79989.,  80682.,  81375.,  90979.,  91868.,  92757.,  93646.,
      94535.,  95424.,  96313.,  97202.,  98091.,  98980.,  99869.,  100758.,
      101647., 102536., 103425., 110285., 111370., 112455., 113540., 114625.,
      115710., 116795., 117880., 118965., 120050., 121135., 122220., 123305.,
      124390., 125475., 129591., 130872., 132153., 133434., 134715., 135996.,
      137277., 138558., 139839., 141120., 142401., 143682., 144963., 146244.,
      147525., 148897., 150374., 151851., 153328., 154805., 156282., 157759.,
      159236., 160713., 162190., 163667., 165144., 166621., 168098., 169575.,
      168203., 169876., 171549., 173222., 174895., 176568., 178241., 179914.,
      181587., 183260., 184933., 186606., 188279., 189952., 191625., 187509.,
      189378., 191247., 193116., 194985., 196854., 198723., 200592., 202461.,
      204330., 206199., 208068., 209937., 211806., 213675., 206815., 208880.,
      210945., 213010., 215075., 217140., 219205., 221270., 223335., 225400.,
      227465., 229530., 231595., 233660., 235725., 226121., 228382., 230643.,
      232904., 235165., 237426., 239687., 241948., 244209., 246470., 248731.,
      250992., 253253., 255514., 257775., 245427., 247884., 250341., 252798.,
      255255., 257712., 260169., 262626., 265083., 267540., 269997., 272454.,
      274911., 277368., 279825., 264733., 267386., 270039., 272692., 275345.,
      277998., 280651., 283304., 285957., 288610., 291263., 293916., 296569.,
      299222., 301875., 284039., 286888., 289737., 292586., 295435., 298284.,
      301133., 303982., 306831., 309680., 312529., 315378., 318227., 321076.,
      323925.};
  const int batches = 1;
  const int m = 15;
  const int k = 14;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M15xK14xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14665.,  14770.,  14875.,  14980.,  15085.,  15190.,  15295.,  15400.,
      15505.,  15610.,  15715.,  15820.,  15925.,  16030.,  16135.,  16240.,
      35245.,  35546.,  35847.,  36148.,  36449.,  36750.,  37051.,  37352.,
      37653.,  37954.,  38255.,  38556.,  38857.,  39158.,  39459.,  39760.,
      55825.,  56322.,  56819.,  57316.,  57813.,  58310.,  58807.,  59304.,
      59801.,  60298.,  60795.,  61292.,  61789.,  62286.,  62783.,  63280.,
      76405.,  77098.,  77791.,  78484.,  79177.,  79870.,  80563.,  81256.,
      81949.,  82642.,  83335.,  84028.,  84721.,  85414.,  86107.,  86800.,
      96985.,  97874.,  98763.,  99652.,  100541., 101430., 102319., 103208.,
      104097., 104986., 105875., 106764., 107653., 108542., 109431., 110320.,
      117565., 118650., 119735., 120820., 121905., 122990., 124075., 125160.,
      126245., 127330., 128415., 129500., 130585., 131670., 132755., 133840.,
      138145., 139426., 140707., 141988., 143269., 144550., 145831., 147112.,
      148393., 149674., 150955., 152236., 153517., 154798., 156079., 157360.,
      158725., 160202., 161679., 163156., 164633., 166110., 167587., 169064.,
      170541., 172018., 173495., 174972., 176449., 177926., 179403., 180880.,
      179305., 180978., 182651., 184324., 185997., 187670., 189343., 191016.,
      192689., 194362., 196035., 197708., 199381., 201054., 202727., 204400.,
      199885., 201754., 203623., 205492., 207361., 209230., 211099., 212968.,
      214837., 216706., 218575., 220444., 222313., 224182., 226051., 227920.,
      220465., 222530., 224595., 226660., 228725., 230790., 232855., 234920.,
      236985., 239050., 241115., 243180., 245245., 247310., 249375., 251440.,
      241045., 243306., 245567., 247828., 250089., 252350., 254611., 256872.,
      259133., 261394., 263655., 265916., 268177., 270438., 272699., 274960.,
      261625., 264082., 266539., 268996., 271453., 273910., 276367., 278824.,
      281281., 283738., 286195., 288652., 291109., 293566., 296023., 298480.,
      282205., 284858., 287511., 290164., 292817., 295470., 298123., 300776.,
      303429., 306082., 308735., 311388., 314041., 316694., 319347., 322000.,
      302785., 305634., 308483., 311332., 314181., 317030., 319879., 322728.,
      325577., 328426., 331275., 334124., 336973., 339822., 342671., 345520.};
  const int batches = 1;
  const int m = 15;
  const int k = 14;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M15xK15xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15800.,  15920.,  16040.,  16160.,  16280.,  16400.,  16520.,  16640.,
      16760.,  16880.,  17000.,  17120.,  17240.,  17360.,  38075.,  38420.,
      38765.,  39110.,  39455.,  39800.,  40145.,  40490.,  40835.,  41180.,
      41525.,  41870.,  42215.,  42560.,  60350.,  60920.,  61490.,  62060.,
      62630.,  63200.,  63770.,  64340.,  64910.,  65480.,  66050.,  66620.,
      67190.,  67760.,  82625.,  83420.,  84215.,  85010.,  85805.,  86600.,
      87395.,  88190.,  88985.,  89780.,  90575.,  91370.,  92165.,  92960.,
      104900., 105920., 106940., 107960., 108980., 110000., 111020., 112040.,
      113060., 114080., 115100., 116120., 117140., 118160., 127175., 128420.,
      129665., 130910., 132155., 133400., 134645., 135890., 137135., 138380.,
      139625., 140870., 142115., 143360., 149450., 150920., 152390., 153860.,
      155330., 156800., 158270., 159740., 161210., 162680., 164150., 165620.,
      167090., 168560., 171725., 173420., 175115., 176810., 178505., 180200.,
      181895., 183590., 185285., 186980., 188675., 190370., 192065., 193760.,
      194000., 195920., 197840., 199760., 201680., 203600., 205520., 207440.,
      209360., 211280., 213200., 215120., 217040., 218960., 216275., 218420.,
      220565., 222710., 224855., 227000., 229145., 231290., 233435., 235580.,
      237725., 239870., 242015., 244160., 238550., 240920., 243290., 245660.,
      248030., 250400., 252770., 255140., 257510., 259880., 262250., 264620.,
      266990., 269360., 260825., 263420., 266015., 268610., 271205., 273800.,
      276395., 278990., 281585., 284180., 286775., 289370., 291965., 294560.,
      283100., 285920., 288740., 291560., 294380., 297200., 300020., 302840.,
      305660., 308480., 311300., 314120., 316940., 319760., 305375., 308420.,
      311465., 314510., 317555., 320600., 323645., 326690., 329735., 332780.,
      335825., 338870., 341915., 344960., 327650., 330920., 334190., 337460.,
      340730., 344000., 347270., 350540., 353810., 357080., 360350., 363620.,
      366890., 370160.};
  const int batches = 1;
  const int m = 15;
  const int k = 15;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M15xK15xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      16920.,  17040.,  17160.,  17280.,  17400.,  17520.,  17640.,  17760.,
      17880.,  18000.,  18120.,  18240.,  18360.,  18480.,  18600.,  40770.,
      41115.,  41460.,  41805.,  42150.,  42495.,  42840.,  43185.,  43530.,
      43875.,  44220.,  44565.,  44910.,  45255.,  45600.,  64620.,  65190.,
      65760.,  66330.,  66900.,  67470.,  68040.,  68610.,  69180.,  69750.,
      70320.,  70890.,  71460.,  72030.,  72600.,  88470.,  89265.,  90060.,
      90855.,  91650.,  92445.,  93240.,  94035.,  94830.,  95625.,  96420.,
      97215.,  98010.,  98805.,  99600.,  112320., 113340., 114360., 115380.,
      116400., 117420., 118440., 119460., 120480., 121500., 122520., 123540.,
      124560., 125580., 126600., 136170., 137415., 138660., 139905., 141150.,
      142395., 143640., 144885., 146130., 147375., 148620., 149865., 151110.,
      152355., 153600., 160020., 161490., 162960., 164430., 165900., 167370.,
      168840., 170310., 171780., 173250., 174720., 176190., 177660., 179130.,
      180600., 183870., 185565., 187260., 188955., 190650., 192345., 194040.,
      195735., 197430., 199125., 200820., 202515., 204210., 205905., 207600.,
      207720., 209640., 211560., 213480., 215400., 217320., 219240., 221160.,
      223080., 225000., 226920., 228840., 230760., 232680., 234600., 231570.,
      233715., 235860., 238005., 240150., 242295., 244440., 246585., 248730.,
      250875., 253020., 255165., 257310., 259455., 261600., 255420., 257790.,
      260160., 262530., 264900., 267270., 269640., 272010., 274380., 276750.,
      279120., 281490., 283860., 286230., 288600., 279270., 281865., 284460.,
      287055., 289650., 292245., 294840., 297435., 300030., 302625., 305220.,
      307815., 310410., 313005., 315600., 303120., 305940., 308760., 311580.,
      314400., 317220., 320040., 322860., 325680., 328500., 331320., 334140.,
      336960., 339780., 342600., 326970., 330015., 333060., 336105., 339150.,
      342195., 345240., 348285., 351330., 354375., 357420., 360465., 363510.,
      366555., 369600., 350820., 354090., 357360., 360630., 363900., 367170.,
      370440., 373710., 376980., 380250., 383520., 386790., 390060., 393330.,
      396600.};
  const int batches = 1;
  const int m = 15;
  const int k = 15;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M15xK15xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      18040.,  18160.,  18280.,  18400.,  18520.,  18640.,  18760.,  18880.,
      19000.,  19120.,  19240.,  19360.,  19480.,  19600.,  19720.,  19840.,
      43465.,  43810.,  44155.,  44500.,  44845.,  45190.,  45535.,  45880.,
      46225.,  46570.,  46915.,  47260.,  47605.,  47950.,  48295.,  48640.,
      68890.,  69460.,  70030.,  70600.,  71170.,  71740.,  72310.,  72880.,
      73450.,  74020.,  74590.,  75160.,  75730.,  76300.,  76870.,  77440.,
      94315.,  95110.,  95905.,  96700.,  97495.,  98290.,  99085.,  99880.,
      100675., 101470., 102265., 103060., 103855., 104650., 105445., 106240.,
      119740., 120760., 121780., 122800., 123820., 124840., 125860., 126880.,
      127900., 128920., 129940., 130960., 131980., 133000., 134020., 135040.,
      145165., 146410., 147655., 148900., 150145., 151390., 152635., 153880.,
      155125., 156370., 157615., 158860., 160105., 161350., 162595., 163840.,
      170590., 172060., 173530., 175000., 176470., 177940., 179410., 180880.,
      182350., 183820., 185290., 186760., 188230., 189700., 191170., 192640.,
      196015., 197710., 199405., 201100., 202795., 204490., 206185., 207880.,
      209575., 211270., 212965., 214660., 216355., 218050., 219745., 221440.,
      221440., 223360., 225280., 227200., 229120., 231040., 232960., 234880.,
      236800., 238720., 240640., 242560., 244480., 246400., 248320., 250240.,
      246865., 249010., 251155., 253300., 255445., 257590., 259735., 261880.,
      264025., 266170., 268315., 270460., 272605., 274750., 276895., 279040.,
      272290., 274660., 277030., 279400., 281770., 284140., 286510., 288880.,
      291250., 293620., 295990., 298360., 300730., 303100., 305470., 307840.,
      297715., 300310., 302905., 305500., 308095., 310690., 313285., 315880.,
      318475., 321070., 323665., 326260., 328855., 331450., 334045., 336640.,
      323140., 325960., 328780., 331600., 334420., 337240., 340060., 342880.,
      345700., 348520., 351340., 354160., 356980., 359800., 362620., 365440.,
      348565., 351610., 354655., 357700., 360745., 363790., 366835., 369880.,
      372925., 375970., 379015., 382060., 385105., 388150., 391195., 394240.,
      373990., 377260., 380530., 383800., 387070., 390340., 393610., 396880.,
      400150., 403420., 406690., 409960., 413230., 416500., 419770., 423040.};
  const int batches = 1;
  const int m = 15;
  const int k = 15;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M15xK16xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19176.,  19312.,  19448.,  19584.,  19720.,  19856.,  19992.,  20128.,
      20264.,  20400.,  20536.,  20672.,  20808.,  20944.,  46312.,  46704.,
      47096.,  47488.,  47880.,  48272.,  48664.,  49056.,  49448.,  49840.,
      50232.,  50624.,  51016.,  51408.,  73448.,  74096.,  74744.,  75392.,
      76040.,  76688.,  77336.,  77984.,  78632.,  79280.,  79928.,  80576.,
      81224.,  81872.,  100584., 101488., 102392., 103296., 104200., 105104.,
      106008., 106912., 107816., 108720., 109624., 110528., 111432., 112336.,
      127720., 128880., 130040., 131200., 132360., 133520., 134680., 135840.,
      137000., 138160., 139320., 140480., 141640., 142800., 154856., 156272.,
      157688., 159104., 160520., 161936., 163352., 164768., 166184., 167600.,
      169016., 170432., 171848., 173264., 181992., 183664., 185336., 187008.,
      188680., 190352., 192024., 193696., 195368., 197040., 198712., 200384.,
      202056., 203728., 209128., 211056., 212984., 214912., 216840., 218768.,
      220696., 222624., 224552., 226480., 228408., 230336., 232264., 234192.,
      236264., 238448., 240632., 242816., 245000., 247184., 249368., 251552.,
      253736., 255920., 258104., 260288., 262472., 264656., 263400., 265840.,
      268280., 270720., 273160., 275600., 278040., 280480., 282920., 285360.,
      287800., 290240., 292680., 295120., 290536., 293232., 295928., 298624.,
      301320., 304016., 306712., 309408., 312104., 314800., 317496., 320192.,
      322888., 325584., 317672., 320624., 323576., 326528., 329480., 332432.,
      335384., 338336., 341288., 344240., 347192., 350144., 353096., 356048.,
      344808., 348016., 351224., 354432., 357640., 360848., 364056., 367264.,
      370472., 373680., 376888., 380096., 383304., 386512., 371944., 375408.,
      378872., 382336., 385800., 389264., 392728., 396192., 399656., 403120.,
      406584., 410048., 413512., 416976., 399080., 402800., 406520., 410240.,
      413960., 417680., 421400., 425120., 428840., 432560., 436280., 440000.,
      443720., 447440.};
  const int batches = 1;
  const int m = 15;
  const int k = 16;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M15xK16xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      20536.,  20672.,  20808.,  20944.,  21080.,  21216.,  21352.,  21488.,
      21624.,  21760.,  21896.,  22032.,  22168.,  22304.,  22440.,  49592.,
      49984.,  50376.,  50768.,  51160.,  51552.,  51944.,  52336.,  52728.,
      53120.,  53512.,  53904.,  54296.,  54688.,  55080.,  78648.,  79296.,
      79944.,  80592.,  81240.,  81888.,  82536.,  83184.,  83832.,  84480.,
      85128.,  85776.,  86424.,  87072.,  87720.,  107704., 108608., 109512.,
      110416., 111320., 112224., 113128., 114032., 114936., 115840., 116744.,
      117648., 118552., 119456., 120360., 136760., 137920., 139080., 140240.,
      141400., 142560., 143720., 144880., 146040., 147200., 148360., 149520.,
      150680., 151840., 153000., 165816., 167232., 168648., 170064., 171480.,
      172896., 174312., 175728., 177144., 178560., 179976., 181392., 182808.,
      184224., 185640., 194872., 196544., 198216., 199888., 201560., 203232.,
      204904., 206576., 208248., 209920., 211592., 213264., 214936., 216608.,
      218280., 223928., 225856., 227784., 229712., 231640., 233568., 235496.,
      237424., 239352., 241280., 243208., 245136., 247064., 248992., 250920.,
      252984., 255168., 257352., 259536., 261720., 263904., 266088., 268272.,
      270456., 272640., 274824., 277008., 279192., 281376., 283560., 282040.,
      284480., 286920., 289360., 291800., 294240., 296680., 299120., 301560.,
      304000., 306440., 308880., 311320., 313760., 316200., 311096., 313792.,
      316488., 319184., 321880., 324576., 327272., 329968., 332664., 335360.,
      338056., 340752., 343448., 346144., 348840., 340152., 343104., 346056.,
      349008., 351960., 354912., 357864., 360816., 363768., 366720., 369672.,
      372624., 375576., 378528., 381480., 369208., 372416., 375624., 378832.,
      382040., 385248., 388456., 391664., 394872., 398080., 401288., 404496.,
      407704., 410912., 414120., 398264., 401728., 405192., 408656., 412120.,
      415584., 419048., 422512., 425976., 429440., 432904., 436368., 439832.,
      443296., 446760., 427320., 431040., 434760., 438480., 442200., 445920.,
      449640., 453360., 457080., 460800., 464520., 468240., 471960., 475680.,
      479400.};
  const int batches = 1;
  const int m = 15;
  const int k = 16;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M15xK16xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21896.,  22032.,  22168.,  22304.,  22440.,  22576.,  22712.,  22848.,
      22984.,  23120.,  23256.,  23392.,  23528.,  23664.,  23800.,  23936.,
      52872.,  53264.,  53656.,  54048.,  54440.,  54832.,  55224.,  55616.,
      56008.,  56400.,  56792.,  57184.,  57576.,  57968.,  58360.,  58752.,
      83848.,  84496.,  85144.,  85792.,  86440.,  87088.,  87736.,  88384.,
      89032.,  89680.,  90328.,  90976.,  91624.,  92272.,  92920.,  93568.,
      114824., 115728., 116632., 117536., 118440., 119344., 120248., 121152.,
      122056., 122960., 123864., 124768., 125672., 126576., 127480., 128384.,
      145800., 146960., 148120., 149280., 150440., 151600., 152760., 153920.,
      155080., 156240., 157400., 158560., 159720., 160880., 162040., 163200.,
      176776., 178192., 179608., 181024., 182440., 183856., 185272., 186688.,
      188104., 189520., 190936., 192352., 193768., 195184., 196600., 198016.,
      207752., 209424., 211096., 212768., 214440., 216112., 217784., 219456.,
      221128., 222800., 224472., 226144., 227816., 229488., 231160., 232832.,
      238728., 240656., 242584., 244512., 246440., 248368., 250296., 252224.,
      254152., 256080., 258008., 259936., 261864., 263792., 265720., 267648.,
      269704., 271888., 274072., 276256., 278440., 280624., 282808., 284992.,
      287176., 289360., 291544., 293728., 295912., 298096., 300280., 302464.,
      300680., 303120., 305560., 308000., 310440., 312880., 315320., 317760.,
      320200., 322640., 325080., 327520., 329960., 332400., 334840., 337280.,
      331656., 334352., 337048., 339744., 342440., 345136., 347832., 350528.,
      353224., 355920., 358616., 361312., 364008., 366704., 369400., 372096.,
      362632., 365584., 368536., 371488., 374440., 377392., 380344., 383296.,
      386248., 389200., 392152., 395104., 398056., 401008., 403960., 406912.,
      393608., 396816., 400024., 403232., 406440., 409648., 412856., 416064.,
      419272., 422480., 425688., 428896., 432104., 435312., 438520., 441728.,
      424584., 428048., 431512., 434976., 438440., 441904., 445368., 448832.,
      452296., 455760., 459224., 462688., 466152., 469616., 473080., 476544.,
      455560., 459280., 463000., 466720., 470440., 474160., 477880., 481600.,
      485320., 489040., 492760., 496480., 500200., 503920., 507640., 511360.};
  const int batches = 1;
  const int m = 15;
  const int k = 16;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M16xK14xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12845.,  12950.,  13055.,  13160.,  13265.,  13370.,  13475.,  13580.,
      13685.,  13790.,  13895.,  14000.,  14105.,  14210.,  30877.,  31178.,
      31479.,  31780.,  32081.,  32382.,  32683.,  32984.,  33285.,  33586.,
      33887.,  34188.,  34489.,  34790.,  48909.,  49406.,  49903.,  50400.,
      50897.,  51394.,  51891.,  52388.,  52885.,  53382.,  53879.,  54376.,
      54873.,  55370.,  66941.,  67634.,  68327.,  69020.,  69713.,  70406.,
      71099.,  71792.,  72485.,  73178.,  73871.,  74564.,  75257.,  75950.,
      84973.,  85862.,  86751.,  87640.,  88529.,  89418.,  90307.,  91196.,
      92085.,  92974.,  93863.,  94752.,  95641.,  96530.,  103005., 104090.,
      105175., 106260., 107345., 108430., 109515., 110600., 111685., 112770.,
      113855., 114940., 116025., 117110., 121037., 122318., 123599., 124880.,
      126161., 127442., 128723., 130004., 131285., 132566., 133847., 135128.,
      136409., 137690., 139069., 140546., 142023., 143500., 144977., 146454.,
      147931., 149408., 150885., 152362., 153839., 155316., 156793., 158270.,
      157101., 158774., 160447., 162120., 163793., 165466., 167139., 168812.,
      170485., 172158., 173831., 175504., 177177., 178850., 175133., 177002.,
      178871., 180740., 182609., 184478., 186347., 188216., 190085., 191954.,
      193823., 195692., 197561., 199430., 193165., 195230., 197295., 199360.,
      201425., 203490., 205555., 207620., 209685., 211750., 213815., 215880.,
      217945., 220010., 211197., 213458., 215719., 217980., 220241., 222502.,
      224763., 227024., 229285., 231546., 233807., 236068., 238329., 240590.,
      229229., 231686., 234143., 236600., 239057., 241514., 243971., 246428.,
      248885., 251342., 253799., 256256., 258713., 261170., 247261., 249914.,
      252567., 255220., 257873., 260526., 263179., 265832., 268485., 271138.,
      273791., 276444., 279097., 281750., 265293., 268142., 270991., 273840.,
      276689., 279538., 282387., 285236., 288085., 290934., 293783., 296632.,
      299481., 302330., 283325., 286370., 289415., 292460., 295505., 298550.,
      301595., 304640., 307685., 310730., 313775., 316820., 319865., 322910.};
  const int batches = 1;
  const int m = 16;
  const int k = 14;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M16xK14xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13755.,  13860.,  13965.,  14070.,  14175.,  14280.,  14385.,  14490.,
      14595.,  14700.,  14805.,  14910.,  15015.,  15120.,  15225.,  33061.,
      33362.,  33663.,  33964.,  34265.,  34566.,  34867.,  35168.,  35469.,
      35770.,  36071.,  36372.,  36673.,  36974.,  37275.,  52367.,  52864.,
      53361.,  53858.,  54355.,  54852.,  55349.,  55846.,  56343.,  56840.,
      57337.,  57834.,  58331.,  58828.,  59325.,  71673.,  72366.,  73059.,
      73752.,  74445.,  75138.,  75831.,  76524.,  77217.,  77910.,  78603.,
      79296.,  79989.,  80682.,  81375.,  90979.,  91868.,  92757.,  93646.,
      94535.,  95424.,  96313.,  97202.,  98091.,  98980.,  99869.,  100758.,
      101647., 102536., 103425., 110285., 111370., 112455., 113540., 114625.,
      115710., 116795., 117880., 118965., 120050., 121135., 122220., 123305.,
      124390., 125475., 129591., 130872., 132153., 133434., 134715., 135996.,
      137277., 138558., 139839., 141120., 142401., 143682., 144963., 146244.,
      147525., 148897., 150374., 151851., 153328., 154805., 156282., 157759.,
      159236., 160713., 162190., 163667., 165144., 166621., 168098., 169575.,
      168203., 169876., 171549., 173222., 174895., 176568., 178241., 179914.,
      181587., 183260., 184933., 186606., 188279., 189952., 191625., 187509.,
      189378., 191247., 193116., 194985., 196854., 198723., 200592., 202461.,
      204330., 206199., 208068., 209937., 211806., 213675., 206815., 208880.,
      210945., 213010., 215075., 217140., 219205., 221270., 223335., 225400.,
      227465., 229530., 231595., 233660., 235725., 226121., 228382., 230643.,
      232904., 235165., 237426., 239687., 241948., 244209., 246470., 248731.,
      250992., 253253., 255514., 257775., 245427., 247884., 250341., 252798.,
      255255., 257712., 260169., 262626., 265083., 267540., 269997., 272454.,
      274911., 277368., 279825., 264733., 267386., 270039., 272692., 275345.,
      277998., 280651., 283304., 285957., 288610., 291263., 293916., 296569.,
      299222., 301875., 284039., 286888., 289737., 292586., 295435., 298284.,
      301133., 303982., 306831., 309680., 312529., 315378., 318227., 321076.,
      323925., 303345., 306390., 309435., 312480., 315525., 318570., 321615.,
      324660., 327705., 330750., 333795., 336840., 339885., 342930., 345975.};
  const int batches = 1;
  const int m = 16;
  const int k = 14;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M16xK14xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14665.,  14770.,  14875.,  14980.,  15085.,  15190.,  15295.,  15400.,
      15505.,  15610.,  15715.,  15820.,  15925.,  16030.,  16135.,  16240.,
      35245.,  35546.,  35847.,  36148.,  36449.,  36750.,  37051.,  37352.,
      37653.,  37954.,  38255.,  38556.,  38857.,  39158.,  39459.,  39760.,
      55825.,  56322.,  56819.,  57316.,  57813.,  58310.,  58807.,  59304.,
      59801.,  60298.,  60795.,  61292.,  61789.,  62286.,  62783.,  63280.,
      76405.,  77098.,  77791.,  78484.,  79177.,  79870.,  80563.,  81256.,
      81949.,  82642.,  83335.,  84028.,  84721.,  85414.,  86107.,  86800.,
      96985.,  97874.,  98763.,  99652.,  100541., 101430., 102319., 103208.,
      104097., 104986., 105875., 106764., 107653., 108542., 109431., 110320.,
      117565., 118650., 119735., 120820., 121905., 122990., 124075., 125160.,
      126245., 127330., 128415., 129500., 130585., 131670., 132755., 133840.,
      138145., 139426., 140707., 141988., 143269., 144550., 145831., 147112.,
      148393., 149674., 150955., 152236., 153517., 154798., 156079., 157360.,
      158725., 160202., 161679., 163156., 164633., 166110., 167587., 169064.,
      170541., 172018., 173495., 174972., 176449., 177926., 179403., 180880.,
      179305., 180978., 182651., 184324., 185997., 187670., 189343., 191016.,
      192689., 194362., 196035., 197708., 199381., 201054., 202727., 204400.,
      199885., 201754., 203623., 205492., 207361., 209230., 211099., 212968.,
      214837., 216706., 218575., 220444., 222313., 224182., 226051., 227920.,
      220465., 222530., 224595., 226660., 228725., 230790., 232855., 234920.,
      236985., 239050., 241115., 243180., 245245., 247310., 249375., 251440.,
      241045., 243306., 245567., 247828., 250089., 252350., 254611., 256872.,
      259133., 261394., 263655., 265916., 268177., 270438., 272699., 274960.,
      261625., 264082., 266539., 268996., 271453., 273910., 276367., 278824.,
      281281., 283738., 286195., 288652., 291109., 293566., 296023., 298480.,
      282205., 284858., 287511., 290164., 292817., 295470., 298123., 300776.,
      303429., 306082., 308735., 311388., 314041., 316694., 319347., 322000.,
      302785., 305634., 308483., 311332., 314181., 317030., 319879., 322728.,
      325577., 328426., 331275., 334124., 336973., 339822., 342671., 345520.,
      323365., 326410., 329455., 332500., 335545., 338590., 341635., 344680.,
      347725., 350770., 353815., 356860., 359905., 362950., 365995., 369040.};
  const int batches = 1;
  const int m = 16;
  const int k = 14;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M16xK15xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15800.,  15920.,  16040.,  16160.,  16280.,  16400.,  16520.,  16640.,
      16760.,  16880.,  17000.,  17120.,  17240.,  17360.,  38075.,  38420.,
      38765.,  39110.,  39455.,  39800.,  40145.,  40490.,  40835.,  41180.,
      41525.,  41870.,  42215.,  42560.,  60350.,  60920.,  61490.,  62060.,
      62630.,  63200.,  63770.,  64340.,  64910.,  65480.,  66050.,  66620.,
      67190.,  67760.,  82625.,  83420.,  84215.,  85010.,  85805.,  86600.,
      87395.,  88190.,  88985.,  89780.,  90575.,  91370.,  92165.,  92960.,
      104900., 105920., 106940., 107960., 108980., 110000., 111020., 112040.,
      113060., 114080., 115100., 116120., 117140., 118160., 127175., 128420.,
      129665., 130910., 132155., 133400., 134645., 135890., 137135., 138380.,
      139625., 140870., 142115., 143360., 149450., 150920., 152390., 153860.,
      155330., 156800., 158270., 159740., 161210., 162680., 164150., 165620.,
      167090., 168560., 171725., 173420., 175115., 176810., 178505., 180200.,
      181895., 183590., 185285., 186980., 188675., 190370., 192065., 193760.,
      194000., 195920., 197840., 199760., 201680., 203600., 205520., 207440.,
      209360., 211280., 213200., 215120., 217040., 218960., 216275., 218420.,
      220565., 222710., 224855., 227000., 229145., 231290., 233435., 235580.,
      237725., 239870., 242015., 244160., 238550., 240920., 243290., 245660.,
      248030., 250400., 252770., 255140., 257510., 259880., 262250., 264620.,
      266990., 269360., 260825., 263420., 266015., 268610., 271205., 273800.,
      276395., 278990., 281585., 284180., 286775., 289370., 291965., 294560.,
      283100., 285920., 288740., 291560., 294380., 297200., 300020., 302840.,
      305660., 308480., 311300., 314120., 316940., 319760., 305375., 308420.,
      311465., 314510., 317555., 320600., 323645., 326690., 329735., 332780.,
      335825., 338870., 341915., 344960., 327650., 330920., 334190., 337460.,
      340730., 344000., 347270., 350540., 353810., 357080., 360350., 363620.,
      366890., 370160., 349925., 353420., 356915., 360410., 363905., 367400.,
      370895., 374390., 377885., 381380., 384875., 388370., 391865., 395360.};
  const int batches = 1;
  const int m = 16;
  const int k = 15;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M16xK15xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      16920.,  17040.,  17160.,  17280.,  17400.,  17520.,  17640.,  17760.,
      17880.,  18000.,  18120.,  18240.,  18360.,  18480.,  18600.,  40770.,
      41115.,  41460.,  41805.,  42150.,  42495.,  42840.,  43185.,  43530.,
      43875.,  44220.,  44565.,  44910.,  45255.,  45600.,  64620.,  65190.,
      65760.,  66330.,  66900.,  67470.,  68040.,  68610.,  69180.,  69750.,
      70320.,  70890.,  71460.,  72030.,  72600.,  88470.,  89265.,  90060.,
      90855.,  91650.,  92445.,  93240.,  94035.,  94830.,  95625.,  96420.,
      97215.,  98010.,  98805.,  99600.,  112320., 113340., 114360., 115380.,
      116400., 117420., 118440., 119460., 120480., 121500., 122520., 123540.,
      124560., 125580., 126600., 136170., 137415., 138660., 139905., 141150.,
      142395., 143640., 144885., 146130., 147375., 148620., 149865., 151110.,
      152355., 153600., 160020., 161490., 162960., 164430., 165900., 167370.,
      168840., 170310., 171780., 173250., 174720., 176190., 177660., 179130.,
      180600., 183870., 185565., 187260., 188955., 190650., 192345., 194040.,
      195735., 197430., 199125., 200820., 202515., 204210., 205905., 207600.,
      207720., 209640., 211560., 213480., 215400., 217320., 219240., 221160.,
      223080., 225000., 226920., 228840., 230760., 232680., 234600., 231570.,
      233715., 235860., 238005., 240150., 242295., 244440., 246585., 248730.,
      250875., 253020., 255165., 257310., 259455., 261600., 255420., 257790.,
      260160., 262530., 264900., 267270., 269640., 272010., 274380., 276750.,
      279120., 281490., 283860., 286230., 288600., 279270., 281865., 284460.,
      287055., 289650., 292245., 294840., 297435., 300030., 302625., 305220.,
      307815., 310410., 313005., 315600., 303120., 305940., 308760., 311580.,
      314400., 317220., 320040., 322860., 325680., 328500., 331320., 334140.,
      336960., 339780., 342600., 326970., 330015., 333060., 336105., 339150.,
      342195., 345240., 348285., 351330., 354375., 357420., 360465., 363510.,
      366555., 369600., 350820., 354090., 357360., 360630., 363900., 367170.,
      370440., 373710., 376980., 380250., 383520., 386790., 390060., 393330.,
      396600., 374670., 378165., 381660., 385155., 388650., 392145., 395640.,
      399135., 402630., 406125., 409620., 413115., 416610., 420105., 423600.};
  const int batches = 1;
  const int m = 16;
  const int k = 15;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M16xK15xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      18040.,  18160.,  18280.,  18400.,  18520.,  18640.,  18760.,  18880.,
      19000.,  19120.,  19240.,  19360.,  19480.,  19600.,  19720.,  19840.,
      43465.,  43810.,  44155.,  44500.,  44845.,  45190.,  45535.,  45880.,
      46225.,  46570.,  46915.,  47260.,  47605.,  47950.,  48295.,  48640.,
      68890.,  69460.,  70030.,  70600.,  71170.,  71740.,  72310.,  72880.,
      73450.,  74020.,  74590.,  75160.,  75730.,  76300.,  76870.,  77440.,
      94315.,  95110.,  95905.,  96700.,  97495.,  98290.,  99085.,  99880.,
      100675., 101470., 102265., 103060., 103855., 104650., 105445., 106240.,
      119740., 120760., 121780., 122800., 123820., 124840., 125860., 126880.,
      127900., 128920., 129940., 130960., 131980., 133000., 134020., 135040.,
      145165., 146410., 147655., 148900., 150145., 151390., 152635., 153880.,
      155125., 156370., 157615., 158860., 160105., 161350., 162595., 163840.,
      170590., 172060., 173530., 175000., 176470., 177940., 179410., 180880.,
      182350., 183820., 185290., 186760., 188230., 189700., 191170., 192640.,
      196015., 197710., 199405., 201100., 202795., 204490., 206185., 207880.,
      209575., 211270., 212965., 214660., 216355., 218050., 219745., 221440.,
      221440., 223360., 225280., 227200., 229120., 231040., 232960., 234880.,
      236800., 238720., 240640., 242560., 244480., 246400., 248320., 250240.,
      246865., 249010., 251155., 253300., 255445., 257590., 259735., 261880.,
      264025., 266170., 268315., 270460., 272605., 274750., 276895., 279040.,
      272290., 274660., 277030., 279400., 281770., 284140., 286510., 288880.,
      291250., 293620., 295990., 298360., 300730., 303100., 305470., 307840.,
      297715., 300310., 302905., 305500., 308095., 310690., 313285., 315880.,
      318475., 321070., 323665., 326260., 328855., 331450., 334045., 336640.,
      323140., 325960., 328780., 331600., 334420., 337240., 340060., 342880.,
      345700., 348520., 351340., 354160., 356980., 359800., 362620., 365440.,
      348565., 351610., 354655., 357700., 360745., 363790., 366835., 369880.,
      372925., 375970., 379015., 382060., 385105., 388150., 391195., 394240.,
      373990., 377260., 380530., 383800., 387070., 390340., 393610., 396880.,
      400150., 403420., 406690., 409960., 413230., 416500., 419770., 423040.,
      399415., 402910., 406405., 409900., 413395., 416890., 420385., 423880.,
      427375., 430870., 434365., 437860., 441355., 444850., 448345., 451840.};
  const int batches = 1;
  const int m = 16;
  const int k = 15;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M16xK16xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19176.,  19312.,  19448.,  19584.,  19720.,  19856.,  19992.,  20128.,
      20264.,  20400.,  20536.,  20672.,  20808.,  20944.,  46312.,  46704.,
      47096.,  47488.,  47880.,  48272.,  48664.,  49056.,  49448.,  49840.,
      50232.,  50624.,  51016.,  51408.,  73448.,  74096.,  74744.,  75392.,
      76040.,  76688.,  77336.,  77984.,  78632.,  79280.,  79928.,  80576.,
      81224.,  81872.,  100584., 101488., 102392., 103296., 104200., 105104.,
      106008., 106912., 107816., 108720., 109624., 110528., 111432., 112336.,
      127720., 128880., 130040., 131200., 132360., 133520., 134680., 135840.,
      137000., 138160., 139320., 140480., 141640., 142800., 154856., 156272.,
      157688., 159104., 160520., 161936., 163352., 164768., 166184., 167600.,
      169016., 170432., 171848., 173264., 181992., 183664., 185336., 187008.,
      188680., 190352., 192024., 193696., 195368., 197040., 198712., 200384.,
      202056., 203728., 209128., 211056., 212984., 214912., 216840., 218768.,
      220696., 222624., 224552., 226480., 228408., 230336., 232264., 234192.,
      236264., 238448., 240632., 242816., 245000., 247184., 249368., 251552.,
      253736., 255920., 258104., 260288., 262472., 264656., 263400., 265840.,
      268280., 270720., 273160., 275600., 278040., 280480., 282920., 285360.,
      287800., 290240., 292680., 295120., 290536., 293232., 295928., 298624.,
      301320., 304016., 306712., 309408., 312104., 314800., 317496., 320192.,
      322888., 325584., 317672., 320624., 323576., 326528., 329480., 332432.,
      335384., 338336., 341288., 344240., 347192., 350144., 353096., 356048.,
      344808., 348016., 351224., 354432., 357640., 360848., 364056., 367264.,
      370472., 373680., 376888., 380096., 383304., 386512., 371944., 375408.,
      378872., 382336., 385800., 389264., 392728., 396192., 399656., 403120.,
      406584., 410048., 413512., 416976., 399080., 402800., 406520., 410240.,
      413960., 417680., 421400., 425120., 428840., 432560., 436280., 440000.,
      443720., 447440., 426216., 430192., 434168., 438144., 442120., 446096.,
      450072., 454048., 458024., 462000., 465976., 469952., 473928., 477904.};
  const int batches = 1;
  const int m = 16;
  const int k = 16;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M16xK16xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      20536.,  20672.,  20808.,  20944.,  21080.,  21216.,  21352.,  21488.,
      21624.,  21760.,  21896.,  22032.,  22168.,  22304.,  22440.,  49592.,
      49984.,  50376.,  50768.,  51160.,  51552.,  51944.,  52336.,  52728.,
      53120.,  53512.,  53904.,  54296.,  54688.,  55080.,  78648.,  79296.,
      79944.,  80592.,  81240.,  81888.,  82536.,  83184.,  83832.,  84480.,
      85128.,  85776.,  86424.,  87072.,  87720.,  107704., 108608., 109512.,
      110416., 111320., 112224., 113128., 114032., 114936., 115840., 116744.,
      117648., 118552., 119456., 120360., 136760., 137920., 139080., 140240.,
      141400., 142560., 143720., 144880., 146040., 147200., 148360., 149520.,
      150680., 151840., 153000., 165816., 167232., 168648., 170064., 171480.,
      172896., 174312., 175728., 177144., 178560., 179976., 181392., 182808.,
      184224., 185640., 194872., 196544., 198216., 199888., 201560., 203232.,
      204904., 206576., 208248., 209920., 211592., 213264., 214936., 216608.,
      218280., 223928., 225856., 227784., 229712., 231640., 233568., 235496.,
      237424., 239352., 241280., 243208., 245136., 247064., 248992., 250920.,
      252984., 255168., 257352., 259536., 261720., 263904., 266088., 268272.,
      270456., 272640., 274824., 277008., 279192., 281376., 283560., 282040.,
      284480., 286920., 289360., 291800., 294240., 296680., 299120., 301560.,
      304000., 306440., 308880., 311320., 313760., 316200., 311096., 313792.,
      316488., 319184., 321880., 324576., 327272., 329968., 332664., 335360.,
      338056., 340752., 343448., 346144., 348840., 340152., 343104., 346056.,
      349008., 351960., 354912., 357864., 360816., 363768., 366720., 369672.,
      372624., 375576., 378528., 381480., 369208., 372416., 375624., 378832.,
      382040., 385248., 388456., 391664., 394872., 398080., 401288., 404496.,
      407704., 410912., 414120., 398264., 401728., 405192., 408656., 412120.,
      415584., 419048., 422512., 425976., 429440., 432904., 436368., 439832.,
      443296., 446760., 427320., 431040., 434760., 438480., 442200., 445920.,
      449640., 453360., 457080., 460800., 464520., 468240., 471960., 475680.,
      479400., 456376., 460352., 464328., 468304., 472280., 476256., 480232.,
      484208., 488184., 492160., 496136., 500112., 504088., 508064., 512040.};
  const int batches = 1;
  const int m = 16;
  const int k = 16;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0FalseFalse, M16xK16xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21896.,  22032.,  22168.,  22304.,  22440.,  22576.,  22712.,  22848.,
      22984.,  23120.,  23256.,  23392.,  23528.,  23664.,  23800.,  23936.,
      52872.,  53264.,  53656.,  54048.,  54440.,  54832.,  55224.,  55616.,
      56008.,  56400.,  56792.,  57184.,  57576.,  57968.,  58360.,  58752.,
      83848.,  84496.,  85144.,  85792.,  86440.,  87088.,  87736.,  88384.,
      89032.,  89680.,  90328.,  90976.,  91624.,  92272.,  92920.,  93568.,
      114824., 115728., 116632., 117536., 118440., 119344., 120248., 121152.,
      122056., 122960., 123864., 124768., 125672., 126576., 127480., 128384.,
      145800., 146960., 148120., 149280., 150440., 151600., 152760., 153920.,
      155080., 156240., 157400., 158560., 159720., 160880., 162040., 163200.,
      176776., 178192., 179608., 181024., 182440., 183856., 185272., 186688.,
      188104., 189520., 190936., 192352., 193768., 195184., 196600., 198016.,
      207752., 209424., 211096., 212768., 214440., 216112., 217784., 219456.,
      221128., 222800., 224472., 226144., 227816., 229488., 231160., 232832.,
      238728., 240656., 242584., 244512., 246440., 248368., 250296., 252224.,
      254152., 256080., 258008., 259936., 261864., 263792., 265720., 267648.,
      269704., 271888., 274072., 276256., 278440., 280624., 282808., 284992.,
      287176., 289360., 291544., 293728., 295912., 298096., 300280., 302464.,
      300680., 303120., 305560., 308000., 310440., 312880., 315320., 317760.,
      320200., 322640., 325080., 327520., 329960., 332400., 334840., 337280.,
      331656., 334352., 337048., 339744., 342440., 345136., 347832., 350528.,
      353224., 355920., 358616., 361312., 364008., 366704., 369400., 372096.,
      362632., 365584., 368536., 371488., 374440., 377392., 380344., 383296.,
      386248., 389200., 392152., 395104., 398056., 401008., 403960., 406912.,
      393608., 396816., 400024., 403232., 406440., 409648., 412856., 416064.,
      419272., 422480., 425688., 428896., 432104., 435312., 438520., 441728.,
      424584., 428048., 431512., 434976., 438440., 441904., 445368., 448832.,
      452296., 455760., 459224., 462688., 466152., 469616., 473080., 476544.,
      455560., 459280., 463000., 466720., 470440., 474160., 477880., 481600.,
      485320., 489040., 492760., 496480., 500200., 503920., 507640., 511360.,
      486536., 490512., 494488., 498464., 502440., 506416., 510392., 514368.,
      518344., 522320., 526296., 530272., 534248., 538224., 542200., 546176.};
  const int batches = 1;
  const int m = 16;
  const int k = 16;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}